<?php
include_once($URL_OBJETO.'conexion.php');
include_once($URL_OBJETO.'oMovimientoGabinete.php');

class aMovimientosGabinete  {
	
	public function getxCodigo($cod) {
		$lista = $this->getListaxCriterio("cod_muestra = $cod");
		if(count($lista) > 0) 
			return $lista[0];
		else
			return false;
	}
	
	public function getCountMovimientos($tipoMov, $desde = "", $hasta = "", $tipoItems = "", $codGabinete = "") {
		$criterio = "tipo_movimiento = '$tipoMov'";
		
		if($desde != "" && $hasta != "") {
			$criterio .= " and fecha_movimiento between '".fechaDMY2PG($desde)."' and '".fechaDMY2PG($hasta)."'";
		}
		
		if($tipoItems != "") {
			$criterio .= " and tipo_item = '$tipoItems'";
		}
		
		if($codGabinete != "") {
			$criterio .= " and cod_gabinete = ".$codGabinete;
		} else {
			if($_SESSION['sitioS'] != "000") {
				$criterio .= " and cod_gabinete in (".$_SESSION['sitioS'].")";
			}
		}
		
		return $this->getCountPorCriterio($criterio);
	}
	
	public function getListaMovimientos($tipoMov, $desde = "", $hasta = "", $tipoItems = "", $codGabinete = "", $cuantos = "", $offset = "") {
		$criterio = "tipo_movimiento = '$tipoMov'";

		if($desde != "" && $hasta != "") {
			$criterio .= " and fecha_movimiento between '".fechaDMY2PG($desde)."' and '".fechaDMY2PG($hasta)."'";
		}
		
		if($tipoItems != "") {
			$criterio .= " and tipo_item = '$tipoItems'";
		}
		
		if($codGabinete != "") {
			$criterio .= " and cod_gabinete = ".$codGabinete;
		} else {
			if($_SESSION['sitioS'] != "000") {
				$criterio .= " and cod_gabinete in (".$_SESSION['sitioS'].")";
			}
		}
		
		$lista = $this->getListaPorCriterio($criterio, $cuantos, $offset);
		if(count($lista) > 0)
			return $lista;
		else
			return array();
	}
	

	public function getListaPorCriterio($criterio, $cuantos = "", $offset = "") {
		$connect = new PG();
		if(!$connect->Conectar()) {
			exit($connect->VerError());
		}
		else {
			$sql = "SELECT
				m.cod_movimiento,
				m.cod_gabinete,
				m.tipo_movimiento,
				m.cod_motivo,
				m.tipo_item,
				m.cod_item,
				case m.tipo_item
					when '1' then u.codue_text
					when '2' then mu.cod_muestra_text
					when '3' then r.cod_replica_text
				end as cod_item_text,
				m.origen,
				m.destino,
				m.responsable,
				m.comentario,
				m.documento,
				m.autorizado_por,
				m.fecha_movimiento,
				m.retorna,
				m.fecha_posible_retorno,
				m.useradd,
				m.usermod,
				m.fecadd,
				m.fecmod,
				m.ipmod,
				m.movimiento_parcial,
				m.cod_mov_relacionado
			FROM
				public.movimientos_gabinete m 
				left join public.uestratigrafica u on (m.cod_item = u.codue and m.tipo_item = '1' )
				left join public.muestra mu on (m.cod_item = mu.cod_muestra and m.tipo_item = '2' )
				left join public.replica r on (m.cod_item = r.cod_replica and m.tipo_item = '3' )";		
			
			
			if(!empty($criterio)) {
				$sql .= " WHERE ".$criterio;				
			}
			
			$sql .= " ORDER BY fecha_movimiento DESC ";
			
			if(!empty($cuantos)) {
				$sql .= " LIMIT ".($cuantos + 0)." OFFSET ".($offset + 0);
			}
	
			
			
			$lista = array();
			
			$sql = $connect->pgt_query($sql);
			while($row = pg_fetch_array($sql)){
				$o = new oMovimientoGabinete();
				$o->setCodMovimiento($row['cod_movimiento']);
				$o->setCodGabinete($row['cod_gabinete']);
				$o->setTipoMovimiento($row['tipo_movimiento']);
				$o->setCodMotivo($row['cod_motivo']);
				$o->setTipoItem($row['tipo_item']);
				$o->setCodItem($row['cod_item']);
				$o->setCodItemText($row['cod_item_text']);
				$o->setOrigen($row['origen']);
				$o->setDestino($row['destino']);
				$o->setResponsable($row['responsable']);
				$o->setComentario($row['comentario']);
				$o->setDocumento($row['documento']);
				$o->setAutorizadoPor($row['autorizado_por']);
				$o->setFechaMovimiento($row['fecha_movimiento']);
				$o->setRetorna($row['retorna']);
				$o->setFechaPosibleRetorno($row['fecha_posible_retorno']);
				$o->setUseradd($row['useradd']);
				$o->setUsermod($row['usermod']);
				$o->setFecadd($row['fecadd']);
				$o->setFecmod($row['fecmod']);
				$o->setIpmod($row['ipmod']);
				$o->setMovimientoParcial($row['movimiento_parcial']);
				$o->setCodMovRelacionado($row['cod_mov_relacionado']);
				
				array_push($lista, $o);
			}
			$connect->LimpiarConsulta();
			$connect->CerrarConexion();
			return $lista;
		}
	}
	
	public function getCountPorCriterio($criterio) {
		$connect = new PG();
		if(!$connect->Conectar()) {
			exit($connect->VerError());
		}
		else {
			$sql = "SELECT count(*) FROM movimientos_gabinete m ";
			
			if(!empty($criterio)) {
				$sql .= "WHERE ".$criterio;
			}
	
			$lista = array();
				
			$sql = $connect->pgt_query($sql);
			$row = pg_fetch_array($sql);
			$contador = $row[0];
	
			$connect->LimpiarConsulta();
			$connect->CerrarConexion();
	
			return $contador;
		}
	}
	
}